package Week.w152;

import org.junit.Test;

import java.util.*;
import java.util.stream.Collectors;
public class Solution01 {

    private int mod=1000000007;
    public int numPrimeArrangements(int n) {
        int primeNum=0;
        for (int j = 2; j <=n; j++) {
            if(mr(j)){
                primeNum++;
            }
        }
        int unPrimeNum=n-primeNum;

        long preNumResult=1;
        for(int i=1;i<=primeNum;i++){
            preNumResult=preNumResult*i%mod;
        }

        long unPreNumResult=1;
        for(int i=1;i<=unPrimeNum;i++){
            unPreNumResult=unPreNumResult*i%mod;
        }

        return (int) (preNumResult*unPreNumResult%mod);
    }



    private boolean mr(int num){
        for (int j=2;j<=Math.sqrt(num);j++){
            if(num%j==0){
                return false;
            }
        }
        return true;
    }

    @Test
    public void test(){
        System.out.println(numPrimeArrangements(2));
        System.out.println(numPrimeArrangements(100));
        System.out.println(numPrimeArrangements(5));
    }
}
